下面是一個基本的卡片,最外層卡片本體.card
帶有圓角邊框,.card
本身是沒有padding
的;卡片可以給它設寬度,或是可以用格線系統訂寬度更彈性,否則它們的寬度將是 100%。範例中卡片內部的上方有一張假圖,下面有.card-body
,裡面是放內容的,它預設是有padding
的。
P.S.:.card
的position設定是position:relative;
。
<div class="card" style="width: 18rem;">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
效果:
下面是.card
帶來的css效果:
.card {
position: relative;
display: flex;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #fff;
background-clip: border-box;
border: 1px solid rgba(0,0,0,.125);
border-radius: .25rem;
}
而.card-body
的css效果如下:
.card-body {
flex: 1 1 auto;
padding: 1rem 1rem;
}
而卡片的標題可以加上.card-title
,這會為它加上margin-bottom:0.5rem;
的css效果。
副標題可以使用.card-subtitle
,css效果是:
.card-subtitle {
margin-top: -.25rem;
margin-bottom: 0;
}
在<a>
標籤中加入.card-link
可以使兩個相鄰的.card-link
產生1rem
的間距,而且hover時link的下底線會消失,其css效果:
.card-link {
&:hover {
text-decoration: none;
}
+ .card-link {
margin-left: $card-spacer-x;
}
}
在卡片中的文字可以使用.card-text
,如果它底下沒有其它文字或是連結等東西,則它的margin-bottom
會被設為0,否則bootstrap的<p>
本身是有設margin-bottom:1rem;
的。.card-text
的css是這樣寫的。
.card-text:last-child {
margin-bottom: 0;
}
如果圖片是放在卡片中的最上方,我們會用.card-img-top
來幫卡片頂端加上圓角,符合卡片的外緣。
相反,如果圖片是在卡片的最底部,則是用.card-img-bottom
。
如果要讓卡片的圖片佔滿整個卡片,而文字浮在圖片上的話,則要在包覆文字的容器上加上.card-img-overlay
,
它會使文字的區域position:absolute;
並對齊在card的左上方(.card
本身是position:relative;)。
.card-img-overlay`的css效果如下:
.card-img-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 1rem;
border-radius: calc(.25rem - 1px);
}
範例:
<div class="card bg-dark text-white">
<img src="https://cdn.pixabay.com/photo/2023/10/02/16/09/bike-8289452_1280.jpg" class="card-img" alt="摩托車">
<div class="card-img-overlay">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
<p class="card-text">Last updated 3 mins ago</p>
</div>
</div>
效果:
卡片的頁首與頁尾我們可以經由添加.card-header
與.card-footer
來完成,加上去之後它的背景會稍微深一些,有自己的padding,也有border-bottom
或是border-top
與card的其它區域做區隔。
例如:
<div class="card text-center">
<div class="card-header">
Featured
</div>
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
<div class="card-footer text-muted">
2 days ago
</div>
</div>
效果:
卡片裡面可以使用.list-group-flush
建立列表群組(列表群組之後會講)
<div class="card" style="width: 18rem;">
<div class="card-header">
Featured
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
</ul>
</div>
長這樣:
卡片可以在卡片header的地方結合導覽元件為卡片添加導覽功能。(navbar 之後會講),如以下範例:
<div class="card text-center">
<div class="card-header">
<ul class="nav nav-tabs card-header-tabs">
<li class="nav-item">
<a class="nav-link active" aria-current="true" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
</div>
<div class="card-body">
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
效果:
在一組卡片外面的容器上加上.card-group
可以使卡片在瀏覽器寬度sm
以上相連接排列。且卡片群組使用頁尾時,它們的內容也會自動對齊。
卡片很常與格線系統一起使用,每個卡片會放在一個col
裡面,並且可以依照瀏覽器的寬度做排列方式的改變,達到響應式的效果。此外,如果希望卡片是相等高度的話,可以把 .h-100
添加於卡片上。
範例是md
以上一列3張卡片,md
以下一列1張卡片:
<div class="row row-cols-1 row-cols-md-3 g-4">
<div class="col">
<div class="card h-100">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a short card.</p>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content.</p>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
</div>
</div>
</div>
</div>
效果如圖: